package com.ytjj.qmyx.admin.mapper;

import com.ytjj.qmyx.admin.model.ImMessageInfo;
import com.ytjj.qmyx.admin.model.ImMessageInfoExample;
import java.util.List;

import com.ytjj.qmyx.admin.model.dto.ImMessageInfoDto;
import org.apache.ibatis.annotations.Param;

public interface ImMessageInfoMapper {
    long countByExample(ImMessageInfoExample example);

    int deleteByExample(ImMessageInfoExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(ImMessageInfo record);

    int insertSelective(ImMessageInfo record);

    List<ImMessageInfo> selectByExampleWithBLOBs(ImMessageInfoExample example);

    List<ImMessageInfo> selectByExample(ImMessageInfoExample example);

    ImMessageInfo selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") ImMessageInfo record, @Param("example") ImMessageInfoExample example);

    int updateByExampleWithBLOBs(@Param("record") ImMessageInfo record, @Param("example") ImMessageInfoExample example);

    int updateByExample(@Param("record") ImMessageInfo record, @Param("example") ImMessageInfoExample example);

    int updateByPrimaryKeySelective(ImMessageInfo record);

    int updateByPrimaryKeyWithBLOBs(ImMessageInfo record);

    int updateByPrimaryKey(ImMessageInfo record);

    List<ImMessageInfoDto>  getChatHistory(@Param("sessionId") Integer sessionId,@Param("customerId")String customerId);

    List<ImMessageInfoDto> getChatDTOHistory(@Param("sessionId") Integer sessionId);

    ImMessageInfo selectBySessionId(@Param("sessionId") Integer sessionId);

    List<ImMessageInfo> selectBySessionIds(@Param("sessionIds") List<Integer> sessionIds);

    List<ImMessageInfo> getAllChatHistory(@Param("sessionId") Integer sessionId);

    List<ImMessageInfoDto> getAllDTOChatHistory(@Param("sessionIds") List<Integer> sessionIds,@Param("customerId")String customerId, @Param("isAll")Integer isAll);

    void updateMessageStatusIsRead(@Param("sessionId") Integer sessionId);

    int selectUnreadMessage(@Param("receiveUserId") String receiveUserId);

    void updateIsRead(String serviceId);
}